package com.hxtec.polaris.mapper;

import com.hxtec.polaris.entity.ShopCategory;
import org.apache.ibatis.annotations.Param;
import tk.mybatis.mapper.MyMapper;

import java.util.Date;
import java.util.List;
import java.util.Map;

/**
 * @author yonyong
 */
public interface ShopCategoryMapper extends MyMapper<ShopCategory> {

    /**
     * 获取所有分类
     * @return
     */
     List<ShopCategory> getAllCategory();

    /**
     * 根据分类if查询分类
     * @param id
     * @return
     */
    List<ShopCategory> getCategoryById(@Param("id") String id);

    /**
     * 新增分类
     * @param shopCategory
     * @return
     */
    Integer insertCategory(ShopCategory shopCategory);

    /**
     * 更新分类
     * @param shopCategory
     * @return
     */
    Integer updateCategoryDynamic(ShopCategory shopCategory);

    /**
     * 删除分类
     * @param id
     * @param date
     * @return
     */
    Integer deleteCategory(@Param("id") String id ,@Param("date") Date date);

    /**
     * 更新父id
     * @param id
     * @param pid
     * @param img
     * @return
     */
    Integer updateCategoryParentId(@Param("id") String id,@Param("pid") String pid,@Param("name") String name,@Param("img") String img);

    /**
     * 更新父id
     * @param id
     * @param pid
     * @param img
     * @return
     */
    Integer updateRootCategory(@Param("id") String id,@Param("pid") String pid,@Param("name") String name,@Param("img") String img);

    /**
     * 更新父id
     * @param id
     * @param pid
     * @return
     */
    Integer updateCategoryChildParentId(@Param("id") String id,@Param("pid") String pid);

    /**
     * 更新父id
     * @param pid
     * @return
     */
    Integer updateCategoryChildNullParentId(@Param("pid") String pid);

    /**
     * 更新父id
     * @param id
     * @param path
     * @param isParent
     * @return
     */
    Integer updateCategoryPath(@Param("id") String id,@Param("path") String path,@Param("isParent")String isParent);

    /**
     * 初始化tree
     * @return
     */
    List<Map<String,Object>> getFirstTree();

    /**
     * 获取下级分类信息
     * @param id
     * @return
     */
    List<Map<String,Object>> getChildTree(Integer id);

    /**
     * 搜索分类
     * @param condition
     * @return
     */
    List<Map<String,Object>> selectTree(@Param("condition") String condition);

    /**
     * 添加分类 如果父节点为空，则添加的节点为一级节点，走一级节点添加方法
     * @param shopCategory
     * @return
     */
    void inserRootCategory(ShopCategory shopCategory);

    /**
     * 查看当前id的节点的子节点数量
     * @param id
     * @return
     */
    int selectChildCountById(@Param("id") Integer id);

    /**
     * 编辑商品 提交更新
     * @param id
     * @param name
     * @param img
     * @param date
     */
    void doUpdateShopCategory(@Param("id") String id,@Param("name") String name, @Param("img")String img, @Param("date")Date date);
}